"""
Case Type   : datakit安全中心
Case Name   : 管理员创建新角色
Create At   : 2025/2/7
Owner       : @sungang14
Description :
    1. 点击安全中心-角色与权限菜单
    2. 点击“添加角色”
    3. 选择一些菜单赋予权限
    4. 点击确定【结果1】
Expect      :
    1.角色创建成功
History     :
"""

import os
import unittest
from yat.test import Node
from yat.test import macro
from testcase.utils.CommonSH import CommonSH
from testcase.utils.Logger import Logger
from testcase.utils.datakit_api.Api import Api


class Tools(unittest.TestCase):
    def setUp(self):
        self.log = Logger()
        self.log.info(f"-----{os.path.basename(__file__)} start-----")
        self.com_sh = CommonSH()
        self.token = self.com_sh.get_token_value(macro.DATAKIT_PASSWD)
        self.assertNotEqual("error", self.token)
        self.sys_api = Api(self.token)
        self.role_name = 'sgtest_case0015'
        self.data_role = f"pageNum=1&pageSize=10&roleName=" + self.role_name

        text = '----查询待添加角色是否存在，存在则删除----'
        self.log.info(text)
        res1 = self.sys_api.query_role_list(self.data_role)
        self.log.info(res1.json())
        self.num_role = res1.json()['total']
        self.log.info(self.num_role)
        if self.num_role != 0:
            self.role_id = res1.json()['rows'][0]['roleId']
            res7 = self.sys_api.delete_role([self.role_id])
            self.log.info(res7.json())
            self.assertEqual(200, res7.json()['code'], '删除角色失败')
            self.assertEqual("success", res7.json()['msg'], '删除用户失败')

    def test_batch_installation(self):
        text = '----step1:安全中心-角色与权限菜单，点击“添加角色”，选择一些菜单赋予权限，点击确定【结果1】 expect:成功----'
        self.log.info(text)
        self.data1 = {"menuIds": [2, 5, 201, 203, 204, 208, 1031, 1032, 1033, 1034, 7, 701, 702],
                      "roleName": self.role_name,
                      "status": f"0",
                      "remark":""}
        res1 = self.sys_api.add_role(self.data1)
        self.log.info(res1.json())
        self.assertEqual(200, res1.json()['code'], '添加角色失败')
        self.assertEqual("success", res1.json()['msg'], '添加角色失败')

        text = '----step2:查询添加角色 expect:查询成功----'
        self.log.info(text)
        res2 = self.sys_api.query_role_list(self.data_role)
        self.log.info(res2.json())
        self.assertEqual(1, res2.json()['total'], '添加角色失败')
        self.role_id = res2.json()['rows'][0]['roleId']
        self.log.info(self.role_id)

    def tearDown(self):
        text = '----:删除角色 expect：删除成功----'
        self.log.info(text)
        self.data3 = [self.role_id]
        res3 = self.sys_api.delete_role(self.data3)
        self.log.info(res3.json())
        self.assertEqual(200, res3.json()['code'], '删除角色失败')
        self.assertEqual("success", res3.json()['msg'], '删除角色失败')
        self.log.info(f"-----{os.path.basename(__file__)} finsh-----")